call-by-need - definizione. Che cos'è call-by-need
Diclib.com
Dizionario in linea

Cosa (chi) è call-by-need - definizione

STRATEGY USED BY PROGRAMMING LANGUAGES TO DETERMINE TWO THINGS—WHEN TO EVALUATE THE ARGUMENTS OF A FUNCTION CALL AND WHAT KIND OF VALUE TO PASS TO THE FUNCTION
Eager evaluation; Call-by-something; Call by reference; Call By Reference; Call by value; Call by something; Call by name; Strict evaluation; Cbpv; Call-by-name; Call-by-need; Call-by-value; Call-by-result; Call-by-reference; Call by result; Call-by-value-result; Call by Name; Pass-by-reference; Return-by-reference; Comparison of normal-order evaluation and applicative-order evaluation; Applicative-order evaluation; Normal-order evaluation; Applicative order; Applicative order evaluation; Normal order evaluation; Non-strict evaluation; Pass by reference; Pass-by-value; Non-strict semantics; Eager execution; Lazy language; Avaliação ansiosa; Avaliacao ansiosa; Call by value-result; Call by value result; Call by value/result; Pass by value; Pass By Value; Pass-By-Value; Pass By Reference; Pass-By-Reference; Pass By Name; Pass-By-Name; Pass-By-Value Evaluation; Pass-By-Reference Evaluation; Pass-By-Name Evaluation; Call-By-Value Evaluation; Call-By-Reference Evaluation; All-By-Name Evaluation; Normal order reduction; Call by object; Call-by-object; Called by value; Call by sharing; Call by future; Call-by-sharing; Call by copy-restore; Call by address; Call by macro expansion; Greedy evaluation

call-by-need         
<reduction> A reduction strategy which delays evaluation of function arguments until their values are needed. A value is needed if it is an argument to a primitive function or it is the condition in a conditional. Call-by-need is one aspect of lazy evaluation. The term first appears in Chris Wadsworth's thesis "Semantics and Pragmatics of the Lambda calculus" (Oxford, 1971, p. 183). It was used later, by J. Vuillemin in his thesis (Stanford, 1973). (1995-05-27)
Lazy evaluation         
EVALUATION STRATEGY THAT DELAYS EVALUATION OF EXPRESSIONS UNTIL ACTUALLY NEEDED
Call by need; Lazy Evaluation; Short circuit (programming); Infinite list; Infinite lists; Lazy evalution; Lazy eval; Lazily evaluated language; Lazy allocation
In programming language theory, lazy evaluation, or call-by-need, is an evaluation strategy which delays the evaluation of an expression until its value is needed (non-strict evaluation) and which also avoids repeated evaluations (sharing).
lazy evaluation         
EVALUATION STRATEGY THAT DELAYS EVALUATION OF EXPRESSIONS UNTIL ACTUALLY NEEDED
Call by need; Lazy Evaluation; Short circuit (programming); Infinite list; Infinite lists; Lazy evalution; Lazy eval; Lazily evaluated language; Lazy allocation
<reduction> An evaluation strategy combining {normal order evaluation} with updating. Under normal order evaluation (outermost or call-by-name evaluation) an expression is evaluated only when its value is needed in order for the program to return (the next part of) its result. Updating means that if an expression's value is needed more than once (i.e. it is shared), the result of the first evaluation is remembered and subsequent requests for it will return the remembered value immediately without further evaluation. This is often implemented by graph reduction. An unevaluated expression is represented as a closure - a data structure containing all the information required to evaluate the expression. Lazy evaluation is one evaluation strategy used to implement non-strict functions. Function arguments may be infinite data structures (especially lists) of values, the components of which are evaluated as needed. According to Phil Wadler the term was invented by Jim Morris. Opposite: eager evaluation. A partial kind of lazy evaluation implements lazy data structures or especially lazy lists where function arguments are passed evaluated but the arguments of data constructors are not evaluated. Full laziness is a program transformation which aims to optimise lazy evaluation by ensuring that all subexpressions in a function body which do not depend on the function's arguments are only evaluated once. (1994-12-14)

Wikipedia

Evaluation strategy

In a programming language, an evaluation strategy is a set of rules for evaluating expressions. The term is often used to refer to the more specific notion of a parameter-passing strategy that defines the kind of value that is passed to the function for each parameter (the binding strategy) and whether to evaluate the parameters of a function call, and if so in what order (the evaluation order). The notion of reduction strategy is distinct, although some authors conflate the two terms and the definition of each term is not widely agreed upon.

To illustrate, executing a function call f(a,b) may first evaluate the arguments a and b, store the results in references or memory locations ref_a and ref_b, then evaluate the function's body with those references passed in. This gives the function the ability to look up the argument values, to modify them via assignment as if they were local variables, and to return values via the references. This is the call-by-reference evaluation strategy.

Evaluation strategy is part of the semantics of the programming language definition. Some languages, such as PureScript, have variants with different evaluation strategies. Some declarative languages, such as Datalog, support multiple evaluation strategies. Some languages define a calling convention.